package com.kexio.user.entity;

import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kexio.common.entity.BaseEntity;

/**
 * 租户信息实体
 * 
 * 租户是多租户系统的基础实体，定义了租户的基本信息和配置。
 * 注意：sys_tenant 表本身不受租户过滤影响，属于系统级表。
 * 
 * @author kexio
 * @since 1.0.0
 */
@TableName("sys_tenant")
public class Tenant extends BaseEntity {
    
    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private String id;
    
    /**
     * 租户ID（业务主键）
     */
    @TableField("tenant_id")
    private String tenantId;
    
    /**
     * 租户名称
     */
    @TableField("tenant_name")
    private String tenantName;
    
    /**
     * 租户类型：ENTERPRISE-企业版, STANDARD-标准版, TRIAL-试用版, PERSONAL-个人版
     */
    @TableField("tenant_type")
    private String tenantType;
    
    /**
     * 租户状态：0-禁用, 1-正常, 2-试用, 3-过期
     */
    @TableField("status")
    private Integer status;
    
    /**
     * 最大用户数
     */
    @TableField("max_users")
    private Integer maxUsers;
    
    /**
     * 过期时间
     */
    @TableField("expire_time")
    private LocalDateTime expireTime;
    
    /**
     * 联系人
     */
    @TableField("contact_name")
    private String contactName;
    
    /**
     * 联系电话
     */
    @TableField("contact_phone")
    private String contactPhone;
    
    /**
     * 联系邮箱
     */
    @TableField("contact_email")
    private String contactEmail;
    
    /**
     * 描述信息
     */
    @TableField("description")
    private String description;
    
    // 审计字段（创建人、创建时间、更新人、更新时间、删除标记）已在 BaseEntity 中定义
    // 租户ID字段在 BaseEntity 中定义，但对于 sys_tenant 表，它作为业务字段重新定义
    
    // Getters and Setters
    public String getId() { return id; }
    public void setId(String id) { this.id = id; }
    
    public String getTenantId() { return tenantId; }
    public void setTenantId(String tenantId) { this.tenantId = tenantId; }
    
    public String getTenantName() { return tenantName; }
    public void setTenantName(String tenantName) { this.tenantName = tenantName; }
    
    public String getTenantType() { return tenantType; }
    public void setTenantType(String tenantType) { this.tenantType = tenantType; }
    
    public Integer getStatus() { return status; }
    public void setStatus(Integer status) { this.status = status; }
    
    public Integer getMaxUsers() { return maxUsers; }
    public void setMaxUsers(Integer maxUsers) { this.maxUsers = maxUsers; }
    
    public LocalDateTime getExpireTime() { return expireTime; }
    public void setExpireTime(LocalDateTime expireTime) { this.expireTime = expireTime; }
    
    public String getContactName() { return contactName; }
    public void setContactName(String contactName) { this.contactName = contactName; }
    
    public String getContactPhone() { return contactPhone; }
    public void setContactPhone(String contactPhone) { this.contactPhone = contactPhone; }
    
    public String getContactEmail() { return contactEmail; }
    public void setContactEmail(String contactEmail) { this.contactEmail = contactEmail; }
    
    public String getDescription() { return description; }
    public void setDescription(String description) { this.description = description; }
    
    // 审计字段的 getter/setter 已在 BaseEntity 中定义
}
